package com.duotai.duotai3;

public class Test {
    public static void main(String[] args) {
        //父类创建对象,调用的变量也是父类自己的
        Fu fu = new Fu();
        System.out.println(fu.num);//100
        fu.m();//调用父类自己的方法

        //子类和父类中有相同的变量,现在子类调用变量使用的是子类自己
        Zi zi = new Zi();
        System.out.println(zi.num);//1000
        zi.m();//子类重写了父类的方法,调用子类重写的

        //多态的定义
        Fu f = new Zi();
        System.out.println(f.num);//100
        f.m();//在多态的引用中,调用的是子类重写之后的方法


        System.out.println("-----------------------------------");
        Fu f1 = new Zi();
        //想要对当前的f1进行数据类型的转换,因为一个父类可能有多个子类
        //因为Zi是Fu的子类,所以我们可以将Zi创建的对象赋值给Fu
        //现在大的数据类型转小的数据类型
        //Zi zi1 = (Zi)f1;
        //zi1.method();

        //在执行转换的过程中,我们需要先对数据类型进行判断
        //然后再进行强制数据类型的转换
        //boolean flag = 对象 instanceof 数据类型;
        boolean flag = f1 instanceof Zi;
        System.out.println(flag);//true

        //当前我们创建的f1的对象是由Zi这个类的对象来处理的
        //如果我们现在进行判断,和S这个子类没有关系,将返回为false
        boolean flag2 = f1 instanceof S;
        System.out.println(flag2);//false

        System.out.println("==================");
        Fu fu1 = new S();
        fu1.method();
    }
}
